#pragma once
// 保存网络模块特有的全局变量或函数声明
#include "net/slogic.h"
#include "net/threadpool.h"
#include "zmq.h"
#include "zmqLogic.h"

// 标记当前进程类型
#define PROCESS_MASTER     0  //master进程，管理进程
#define PROCESS_GUARD      1  //guard进程，守护进程

/*net模块会使用到的一些全局变量*/
extern zmqLogic g_zmq0;// net（主）连接master，PAIR→PAIR
extern zmqLogic g_zmq1;// net（主）连接game，PAIR→PAIR
extern zmqLogic g_zmq2;// net连接log（主），PUSH→PULL
extern CLogicSocket  g_socket;// socket全局对象（监听套接字） 
extern CThreadPool   g_threadpool;// 线程池全局对象
extern int g_process;// 进程类型，比如master, guard进程   

// 主流程相关相关
void Master_process_cycle();// 创建worker子进程
int Daemon();// 初始化守护进程
void Daemon_main_loop();// 守护进程监控事件主循环
int RestartChildProcess();// 守护进程监控到子进程退出后执行的重启函数
void Process_events_and_timers();// 单次Epoll事件循环和定时器事件循环

// 和ZMQ队列相关
bool Init_zmq();
void DealRPCFromLogic(const char* data, size_t& size);

